4) {$margin=4;} $dayfrom=totime($datumod); $dayto=totime($datumdo); $t=fopen("GAIN.TXT","r"); $minh=0;$maxh=0; $x[0]=0;$y[0]=100; $i=0; //vlozil Jirka while (!(feof($t))) { $i++; $x[$i]=$i; fscanf($t,"%s%s*[^\n]",$dat[$i],$z[$i]); if ($z[$i]=="") $i--; } $indexdo=$i; while (($indexdo>0) and (totime($dat[$indexdo])>$dayto)) $indexdo--; $indexod=$indexdo; while (($indexod>0) and (totime($dat[$indexod-1])>=$dayfrom)) $indexod--; $days=$indexdo-$indexod+1; $n=$days; $m=$indexdo; $x[0]=0;$y[0]=100; for ($i=1;$i<=$n;$i++) { if ($margin==0) { $y[$i]=$y[$i-1]+$z[$m-$n+$i]/100; } else { $y[$i]=$y[$i-1]*(1+$margin*$z[$m-$n+$i]/10000); } $dat[$i]=$dat[$i+$m-$n]; } $st=0;$st2=0;$maxz=$y[0];$maxdr=0; for ($i=0;$i<$n;$i++) { if ($margin>0) { $st=$st+log($y[$i+1]/$y[$i])/$n; $st2=$st2+log($y[$i+1]/$y[$i])*log($y[$i+1]/$y[$i]); } else { $st=$st+($y[$i+1]-$y[$i])/$n/100; $st2=$st2+($y[$i+1]-$y[$i])*($y[$i+1]-$y[$i])/10000; } if ($y[$i+1]>$maxz) { $maxz=$y[$i+1]; } if ($margin==0) { $dr=$maxz-$y[$i+1]; } else { $dr=100*(1-$y[$i+1]/$maxz); } if ($dr>$maxdr) {$maxdr=$dr;} } if ($n>1) { $st2=100*sqrt(($st2-$n*$st*$st)/($n-1)); } else {$st2=0;} $odh[0]=100; for ($i=1;$i<=$n;$i++) { $odh[$i]=$odh[$i-1]*exp($st); } for ($i=0;$i<=$n;$i++) { $y[$i]=$y[$i]-100; $odh[$i]=$odh[$i]-100; if ($y[$i]<$minh) {$minh=$y[$i];} if ($y[$i]>$maxh) {$maxh=$y[$i];} } $min=0;$max=0;$k=-10; $d[-10]=1000000;$d[-9]=500000;$d[-8]=200000; $d[-7]=100000;$d[-6]=50000;$d[-5]=20000; $d[-4]=10000;$d[-3]=5000;$d[-2]=2000; $d[-1]=1000;$d[0]=500; $d[1]=200;$d[2]=100;$d[3]=50;$d[4]=25;$d[5]=20;$d[6]=10; $d[7]=5;$d[8]=3;$d[9]=2;$d[10]=1;$d[11]=0.5;$d[12]=0.25; $d[13]=0.2;$d[14]=0.1;$d[15]=0.05; while (($max-$min<10)&&($k<15)) { $k++; $min=0;$max=0; $delta=$d[$k]; while ($minh-0.2*$delta<$min*$delta) {$min--;} while ($maxh+0.2*$delta>$max*$delta) {$max++;} } $grafika->Scale(-0.1*$n,$min-($max-$min)/10,$n+0.1*$n,$max+($max-$min)/10); for ($k=$min;$k<=$max;$k++) { if ($k==0) { $grafika->PenColor(0,0,0); } else { $grafika->PenColor(255,0,0); } $grafika->Move(0,$k); $grafika->Plot($n,$k); $grafika->PenColor(0,0,0); $r=$k*$delta; $l=-0.025*$n-0.01*$n*strlen($r); $grafika->Move($l,$k); $grafika->OutString($r); } $grafika->PenColor(0,0,0); $grafika->Move(0.15*$n,$min-0.8*($max-$min)/10); $s="Simulovaný výnos Automatu v obdobě od ".$dat[$indexod]." do ".$dat[$indexdo]; $pmargin=$margin;if (strpos($pmargin,".")===FALSE) $pmargin.="."; while(strlen($pmargin)<4) $pmargin.="0";$pmargin=strtr($pmargin,".",","); $s=$s." při použití marginu ".$pmargin."."; $grafika->OutString($s); $grafika->Move(0.15*$n,$max+0.05*($max-$min)); $s="Celkový výnos: ".number_format($y[$n],2)."% Průměrná denní odchylka: ".number_format($st2,4)."%"; $s.=" Maximalni pokles: ".number_format($maxdr,2)."%"; $grafika->OutString($s); $grafika->PenColor(0,0,200); $grafika->Move($x[0],$y[0]); for ($i=1;$i<=$n;$i++) { $grafika->Plot($x[$i],$y[$i]/$delta); } $grafika->Paint(); ?>